package sv.com.bolsaTrabajo.view.bean.managedbeans;

import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.context.RequestContext;
import sv.com.bolsaTrabajo.model.dao.TipoRubroFacade;
import sv.com.bolsaTrabajo.model.entities.TipoRubro;
import sv.com.bolsaTrabajo.view.bean.ManejadorAccion;

/**
 *
 * @author Karina Palacios
 */
@ManagedBean
@SessionScoped
public final class TipoRubroMB extends ManejadorAccion {

    @EJB
    private TipoRubroFacade tipoRubroFacade;
    private TipoRubro tipoRubro;
    private List<TipoRubro> tipoRubros;

    /**
     * Constructor
     */
    public TipoRubroMB() {
        limpiarTipoRubro();
        tipoRubro = new TipoRubro();
    }

    public void limpiarTipoRubro() {
        setTipoRubro(new TipoRubro());
    }

    public List<TipoRubro> getTipoRubros() {
        tipoRubros = tipoRubroFacade.obtenerTodos();
        return tipoRubros;
    }

    public void guardarEntidad() {
        try {
            System.out.println("====> Ingresando a crear Tipo Rubro");
            getTipoRubro().setFechaMod(new Date());

            if (tipoRubro.getIdTipoRubro() == null) {
                tipoRubroFacade.crear(tipoRubro);
                lanzarMensajeInformacion("Exito", "Tipo Rubro guardada correctamente");
            } else {
                tipoRubroFacade.modificar(tipoRubro);
                lanzarMensajeInformacion("Exito", "Tipo Rubro modificada correctamente");
            }
            RequestContext.getCurrentInstance().update("IDFrmTipoRubro");
            RequestContext.getCurrentInstance().execute("WVDialogTipoRubro.hide();");
        } catch (Exception e) {
            lanzarMensajeError("", "Error al guardar Tipo Rubro", e);
        }
    }

    public void modificarEntidad(TipoRubro modtTipoRubro) {
        try {
            this.tipoRubro = modtTipoRubro;
        } catch (Exception e) {
            lanzarMensajeError("Error al actualizar datos", "No se pueden asignar los valores para Tipo Rubro", e);
        }
        RequestContext.getCurrentInstance().update("");
    }

    /**
     * ****************** Getters and Setter ********************
     */
    
    public TipoRubroFacade getTipoRubroFacade() {
        return tipoRubroFacade;
    }

    public void setTipoRubroFacade(TipoRubroFacade tipoRubroFacade) {
        this.tipoRubroFacade = tipoRubroFacade;
    }

    public TipoRubro getTipoRubro() {
        return tipoRubro;
    }

    public void setTipoRubro(TipoRubro tipoRubro) {
        this.tipoRubro = tipoRubro;
    }
}
